#include <iostream>
#include <array>
using namespace std;
using ll = long long;
int n, m;
array<ll, 100'000> h, p;
void input();
bool test(ll t){
int i, j, k;
for(i=0, j=0; i<n; ++i){
ll a = abs(h[i] - p[j]);
if(a > t){
if(p[j] < h[i] || i == n-1)
return false;
else
continue;
}
for(k = j+1; k < m; ++k){
if(p[k] <= h[i]) continue;
ll b = p[k] - h[i], c;
if(p[j] < h[i])
c = min(a+a+b, a+b+b);
else
c = max(a, b);
if(c > t)
break;
}
if(k == m) break;
j = k;
}
return (i < n);
}
int main(){
input();
ll l = 0, r = 1e12;
while(l < r){
ll m = (r+l)/2;
if(test(m))
r = m;
else
l = m+1;
}
cout << l << '\n';
return 0;
}
void input(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for(int i = 0; i < n; ++i)
cin >> h[i];
for(int i = 0; i < m; ++i)
cin >> p[i];
}
1699A - The Third Three Number Problem | 1617B - GCD Problem |
841A - Generous Kefa | 1690B - Array Decrements |
1692C - Where's the Bishop | 104A - Blackjack |
1438A - Specific Tastes of Andre | 1711C - Color the Picture |
1194C - From S To T | 110B - Lucky String |
1114A - Got Any Grapes | 224B - Array |
125B - Simple XML | 567B - Berland National Library |
431B - Shower Line | 282C - XOR and OR |
1582B - Luntik and Subsequences | 609A - Флеш-карты |
1207A - There Are Two Types Of Burgers | 371C - Hamburgers |
343B - Alternating Current | 758B - Blown Garland |
1681B - Card Trick | 1592A - Gamer Hemose |
493D - Vasya and Chess | 1485A - Add and Divide |
337B - Routine Problem | 1392D - Omkar and Bed Wars |
76E - Points | 762C - Two strings |